package com.baofu.paycore.biz.engine.command;

import com.baofu.paycore.biz.enums.CommandProcessorEnum;
import com.baofu.paycore.biz.enums.CommandTypeEnum;
import com.baofu.paycore.service.facade.enums.PayToolTypeEnum;

/**
 * 统一支付命令
 *
 * <p/>
 *      1、获取支付命令类型
 *      2、获取命令所针对的支付工具
 *      3、获取优先级
 *      4、获取指令ID
 * </p>
 * User: LZQ Date: 2016/04/21  Version: 1.0
 */
public interface Command extends Comparable<Command> {

    /**
     * 获取支付命令类型。
     *
     * @return  返回该命令的类型枚举。
     */
    CommandTypeEnum getCommandType();

    /**
     * 获取命令所针对的支付工具。
     *
     * @return  返回命令所针对的支付工具。
     */
    PayToolTypeEnum getPayToolType();

    /**
     * 获取该命令对应的处理器。
     *
     * @return  返回该命令的对应的处理器的枚举。
     */
    CommandProcessorEnum getProcessorType();

    /**
     * 获取优先级
     *
     * @return  级别
     */
    int getOrder();

    /**
     * 获取指令ID
     *
     * @return 指令编号
     */
    String getCommandNo();
}
